home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earcd / phase5 / ppcrelease / examples / msg5ppc.c < prev    next >
C/C++ Source or Header  |  1998-02-21  |  2KB  |  94 lines

  1. #include <exec/types.h>
  2. #include <exec/nodes.h>
  3. #include <exec/lists.h>
  4. #include <exec/memory.h>
  5. #include <utility/tagitem.h>
  6. #include <powerup/ppclib/interface.h>
  7. #include <powerup/ppclib/message.h>
  8. #include <powerup/ppclib/tasks.h>
  9. #include <powerup/gcclib/powerup_protos.h>
  10.  
  11. #define text    "Text sent by PPC processor\n"
  12. #define    DEBUG    0
  13.  
  14. struct StartupData
  15. {
  16.     ULONG    MsgCount;
  17. };
  18.  
  19. BPTR    MyFile;
  20. void printf(char *String);
  21.  
  22.  
  23. int    main(void)
  24. {
  25. struct TagItem        MyTags[10];
  26. struct StartupData    *StartupData;
  27. void            *PPCPort;
  28. void            *ReplyPort;
  29. void            *PPCMsg;
  30. void            *M68kMsg;
  31. void            *Body;
  32. ULONG            result;
  33. ULONG            MsgCount;
  34. ULONG            i;
  35.  
  36.   StartupData    =(struct StartupData *) PPCGetTaskAttr(PPCTASKTAG_STARTUP_MSGDATA);
  37.  
  38.   MsgCount    =    StartupData->MsgCount;
  39.  
  40. #if DEBUG
  41.   if (MyFile = PPCOpen("con:0/0/640/200/MessageDemo - PPC output/CLOSE", MODE_NEWFILE))
  42.   {
  43.     printf("Creating message port\n");
  44. #endif
  45.  
  46.     if (PPCPort=(void*) PPCGetTaskAttr(PPCTASKTAG_MSGPORT))
  47.     {
  48.  
  49. #if DEBUG
  50.       printf("Waiting for M68k message\n");
  51. #endif
  52.       i    =    0;
  53.       while (i<MsgCount)
  54.       {
  55.         PPCWaitPort(PPCPort);
  56.  
  57. #if DEBUG
  58.         printf("Getting message\n");
  59. #endif
  60.         while (i<MsgCount && (M68kMsg = PPCGetMessage(PPCPort)))
  61.         {
  62. #if DEBUG
  63.           printf("Message: ");
  64.           printf((char*) PPCGetMessageAttr(M68kMsg, PPCMSGTAG_DATA));
  65. #endif
  66.           PPCReplyMessage(M68kMsg);
  67.           i++;
  68.         }
  69.       }
  70.  
  71. #if DEBUG
  72.       printf("Deleting message port\n");
  73. #endif
  74.     }
  75.     else
  76.     {
  77. #if DEBUG
  78.       printf("Could not find PPC Task`s msgport\n");
  79. #endif
  80.     }
  81.  
  82. #if DEBUG
  83.     printf("Closing output\n");
  84.     PPCClose(MyFile);
  85.   }
  86. #endif
  87. }
  88.  
  89. void printf(char *String)
  90. {
  91.   PPCWrite(MyFile, String, strlen(String));
  92. }
  93.  
  94.